package com.xbongbong.paas.model.impl;

import com.xbongbong.paas.domain.dao.PaasStageDao;
import com.xbongbong.paas.domain.entity.PaasStageEntity;
import com.xbongbong.paas.model.PaasStageModel;
import com.xbongbong.paas.toolbox.exception.XbbException;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * 阶段
 * @author 李少杰
 * @version v1.0.0
 * @date 2021/11/17 16:48
 */
@Service("paasStageModel")
public class PaasStageModelImpl implements PaasStageModel {

    @Resource
    private PaasStageDao paasStageDao;

    @Override
    public Integer insert(PaasStageEntity entity) throws XbbException {
        return paasStageDao.insert(entity);
    }

    @Override
    public Integer update(PaasStageEntity entity) throws XbbException {
        return paasStageDao.update(entity);
    }

    @Override
    public List<PaasStageEntity> findEntitys(Map<String, Object> param) {
        return paasStageDao.findEntitys(param);
    }

    @Override
    public Integer getEntitysCount(Map<String, Object> param) {
        return paasStageDao.getEntitysCount(param);
    }

    @Override
    public List findEntitysWithoutSub(Map<String, Object> param) {
        return paasStageDao.findEntitys(param);
    }

    @Override
    public PaasStageEntity getByKey(Long key, String corpid) {
        return paasStageDao.getByKey(key, corpid);
    }

    @Override
    public PaasStageEntity getByCode(String corpid, Long formId, String code) {
        return paasStageDao.getByCode(corpid, formId, code);
    }

    @Override
    public void updateEnable(String corpid, Integer id, Integer enable) {
        paasStageDao.updateEnable(corpid, id, enable);
    }

    @Override
    public Integer save(PaasStageEntity paasStageEntity) throws XbbException {
        if (Objects.isNull(paasStageEntity.getId())) {
            return insert(paasStageEntity);
        }
        return update(paasStageEntity);
    }

    @Override
    public void insertBatch(List<PaasStageEntity> list) {
        paasStageDao.insertBatch(list);
    }

    @Override
    public void sort(String corpid, Long formId, Map<Long, Integer> sortMap) {
        paasStageDao.sort(corpid, formId, sortMap);
    }

    @Override
    public List<PaasStageEntity> getListByFormId(Long formId, String corpId) {
        return paasStageDao.getListByFormId(formId, corpId);
    }

    @Override
    public PaasStageEntity getFirstStage(String corpid, Long formId) {
        return paasStageDao.getFirstStage(corpid, formId);
    }

    @Override
    public PaasStageEntity getNextStage(String corpid, Long formId, Integer sort) {
        return paasStageDao.getNextStage(corpid, formId, sort);
    }

    @Override
    public List<Integer> getIntervalCodeList(Integer startSort, Integer endSort, String corpid, Long formId) {
        return paasStageDao.getIntervalCodeList(startSort, endSort, corpid, formId);
    }

    @Override
    public void updateBatch(List<PaasStageEntity> paasStageEntityList, String corpid) {
        paasStageDao.updateBatch(paasStageEntityList, corpid);
    }

    @Override
    public void updateBatchDefaultAndLinkOption(List<PaasStageEntity> paasStageEntityList, String corpid) {
        paasStageDao.updateBatchDefaultAndLinkOption(paasStageEntityList, corpid);
    }

    @Override
    public void updateBatch4MirrorRollback(List<PaasStageEntity> paasStageEntityList, String corpid) {
        paasStageDao.updateBatch4MirrorRollback(paasStageEntityList, corpid);
    }

    @Override
    public void updateName(Long id, String name) {
        paasStageDao.updateName(id, name);
    }

    @Override
    public Integer delete(PaasStageEntity entity) {
        return paasStageDao.deleteByKey(entity.getId(), entity.getCorpid());
    }

    @Override
    public Integer deleteBatch(List<PaasStageEntity> paasStageEntityList, String corpid) {
        return paasStageDao.deleteBatch(paasStageEntityList, corpid);
    }
}
